const { contextBridge, ipcRenderer } = require("electron");
contextBridge.exposeInMainWorld("versions", {
    node: () => process.versions.node,
    chrome: () => process.versions.chrome,
    electron: () => process.versions.electron,
    ping: () => ipcRenderer.invoke("ping"),
    invokeMessage: () => ipcRenderer.invoke("invokeHandleMessage"),
    // invokeMessage 接收器使用，即render/index.js中使用，相当于vue中的$on('invokeMessage')接收
    // invokeHandleMessage 触发器使用，即main.js中使用，相当于vue中的$emit('invokeHandleMessage')触发
    // 但又有点不同，vue中的$emit和$on参数同名，而此处ipc是个中介
    // 其实就是在ipcRenderer中注册一个触发器事件，名称为"invokeHandleMessage"，然后通过ipcMain.handle("invokeSendMessage",callback)去触发事件
    // 在需要的地方通过window.version."invokeMessage"去接收

    sendMessage: (
        channel = "sendOnMessage",
        data = "send方法通信，render进程向主进程通信"
    ) => {
        ipcRenderer.send(channel, data);
    },
    // 主进程向渲染进程通信
    mainToRend: (callback) =>
        ipcRenderer.on("openFileMes", (event, data) => callback(data)),
});
